home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / ctlib100.zip / INSTALL.LZH / CONTAINR.INT < prev    next >
Text File  |  1996-10-12  |  6KB  |  156 lines

  1. {**************************************************************************}
  2. {*  BitSoft Development, L.L.C.                                           *}
  3. {*  Copyright (C) 1995, 1996 BitSoft Development, L.L.C.                  *}
  4. {*  All rights reserved.                                                  *}
  5. {*  Base container objects unit                                           *}
  6. {*  Version 2.6.4                                                         *}
  7. {**************************************************************************}
  8.  
  9. unit Containr;
  10.  
  11. {$X+}
  12.  
  13. interface
  14.  
  15. uses Objects
  16.      {$ifdef ver60}, BsdVer60 {$endif};
  17.  
  18. const
  19.   ctOk          =  0;
  20.   ctRange       = -1;
  21.   ctOverflow    = -2;
  22.   ctInit        = -3;
  23.   ctStream      = -4;
  24.   ctOutOfMemory = -5;
  25.   ctDuplicate   = -6;
  26.   ctInvalidSig  = -7;
  27.   ctInvalidVer  = -8;
  28.  
  29. const
  30.   tctOk          : Integer = ctOk;
  31.   tctRange       : Integer = ctRange;
  32.   tctOverflow    : Integer = ctOverflow;
  33.   tctInit        : Integer = ctInit;
  34.   tctStream      : Integer = ctStream;
  35.   tctOutOfMemory : Integer = ctOutOfMemory;
  36.   tctDuplicate   : Integer = ctDuplicate;
  37.   tctInvalidSig  : Integer = ctInvalidSig;
  38.   tctInvalidVer  : Integer = ctInvalidVer;
  39.  
  40. const
  41.   ctRetry =  0;
  42.   ctAbort = -1;
  43.  
  44. const
  45.   ctTop    = 1;
  46.   ctBottom = 2;
  47.  
  48. type
  49.   PContainer = ^TContainer;
  50.   TContainer = object(TObject)
  51.       Status : Integer;
  52.       Count : LongInt;
  53.     constructor Init;
  54.     constructor Load(var S: TStream);
  55.     function Delete (Item: Pointer): Boolean; virtual;
  56.     function DeleteAll : Boolean; virtual;
  57.     function DeleteAllThat (Test : Pointer) : Boolean; virtual;
  58.     procedure DoneItem (Item : Pointer); virtual;
  59.     function Error (Code : Integer; var Info) : Integer; virtual;
  60.     function ForEach (Action : Pointer) : Boolean; virtual;
  61.     function ForEachThat (Test, Action : Pointer): Boolean; virtual;
  62.     function Free (Item : Pointer) : Boolean; virtual;
  63.     function FreeAll : Boolean; virtual;
  64.     function FreeAllThat (Test : Pointer) : Boolean; virtual;
  65.     procedure FreeItem (Item : Pointer); virtual;
  66.     function GetItem (var S : TStream) : Pointer; virtual;
  67.     function Insert (Item : Pointer) : Boolean; virtual;
  68.     function Pack : Boolean; virtual;
  69.     procedure PutItem (var S : TStream; Item : Pointer); virtual;
  70.     procedure Reset; virtual;
  71.     procedure Store(var S: TStream);
  72.     function Zap : Boolean; virtual;
  73.   end;  { TContainer }
  74.  
  75. type
  76.   PSequence = ^TSequence;
  77.   TSequence = object(TContainer)
  78.       FirstIndex : LongInt;
  79.     constructor Init;
  80.     constructor Load (var S: TStream);
  81.     function At (Index : LongInt) : Pointer; virtual;
  82.     function AtDelete (Index : LongInt) : Boolean; virtual;
  83.     function AtFree (Index : LongInt) : Boolean; virtual;
  84.     function AtInsert (Index : LongInt; Item : Pointer) : Boolean; virtual;
  85.     function AtPut (Index : LongInt; Item : Pointer) : Boolean; virtual;
  86.     function AtReplace(Index : LongInt; Item : Pointer) : Boolean; virtual;
  87.     function Delete (Item : Pointer) : Boolean; virtual;
  88.     function DeleteAllThat (Test: Pointer): Boolean;  virtual;
  89.     function First (var Index : LongInt) : Pointer; virtual;
  90.     function FirstThat (Test : Pointer; var Index : LongInt) : Pointer;
  91.       virtual;
  92.     function ForEach (Action : Pointer) : Boolean; virtual;
  93.     function ForEachThat (Test, Action : Pointer) : Boolean; virtual;
  94.     function FreeAll : Boolean; virtual;
  95.     function FreeAllThat (Test: Pointer): Boolean; virtual;
  96.     function IndexOf (Item : Pointer) : LongInt; virtual;
  97.     function Insert (Item : Pointer) : Boolean; virtual;
  98.     function Last (var Index : LongInt) : Pointer; virtual;
  99.     function LastIndex : LongInt;
  100.     function LastThat (Test : Pointer; var Index : LongInt) : Pointer;
  101.       virtual;
  102.     function Next (var Index: LongInt) : Pointer; virtual;
  103.     function NextThat (Test : Pointer; var Index : LongInt) : Pointer;
  104.       virtual;
  105.     function OutOfRange (Index : LongInt) : Boolean; virtual;
  106.     function Prev (var Index: LongInt) : Pointer; virtual;
  107.     function PrevThat (Test : Pointer; var Index : LongInt) : Pointer;
  108.       virtual;
  109.     function Search (Key : Pointer; var Index : LongInt): Boolean; virtual;
  110.     procedure Store (var S: TStream);
  111.   end;  { TSequence }
  112.  
  113. type
  114.   PGraph = ^TGraph;
  115.   TGraph = object(TContainer)
  116.       CaseSensitive : Boolean;
  117.       Duplicates : Boolean;
  118.       ExactMatch : Boolean;
  119.     constructor Init;
  120.     constructor Load(var S: TStream);
  121.     function Compare (Key1, Key2 : Pointer): Integer; virtual;
  122.     function DeleteAllThat (Test: Pointer): Boolean;  virtual;
  123.     function Find (Key : Pointer; var Hits : LongInt) : Boolean; virtual;
  124.     function FindThat (Key, Test : Pointer; var Hits : LongInt) : Boolean;
  125.       virtual;
  126.     function First : Pointer; virtual;
  127.     function FirstThat (Test : Pointer) : Pointer; virtual;
  128.     function FreeAllThat (Test: Pointer): Boolean; virtual;
  129.     function ItemPut (OldItem, NewItem : Pointer) : Boolean; virtual;
  130.     function ItemReplace (OldItem, NewItem : Pointer) : Boolean; virtual;
  131.     function KeyFirst (Key : Pointer) : Pointer; virtual;
  132.     function KeyFirstThat (Test : Pointer; Key : Pointer) : Pointer; virtual;
  133.     function KeyLast (Key : Pointer) : Pointer; virtual;
  134.      function KeyLastThat (Test : Pointer; Key : Pointer) : Pointer; virtual;
  135.     function KeyOf(Item : Pointer) : Pointer; virtual;
  136.     function Last : Pointer; virtual;
  137.     function LastThat (Test : Pointer) : Pointer; virtual;
  138.     function Next (Item : Pointer) : Pointer; virtual;
  139.     function NextThat (Test : Pointer; Item : Pointer) : Pointer; virtual;
  140.     function Prev (Item : Pointer) : Pointer; virtual;
  141.     function PrevThat (Test : Pointer; Item : Pointer) : Pointer; virtual;
  142.     procedure Store(var S: TStream);
  143.     procedure Update;
  144.   end;  { TGraph }
  145.  
  146. type
  147.   PNode = ^TNode;
  148.   TNode = object(TObject)
  149.     function Compare (Key : Pointer; CaseSensitive : Boolean) : ShortInt;
  150.       virtual;
  151.     function KeyOf : Pointer; virtual;
  152.   end; { TNode }
  153.  
  154. implementation
  155. end.
  156.